gtk_entry_accessible_get_caret_offset (AtkText *text)
{
GtkWidget *widget;
+ gboolean result;
+ int cursor_position;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
- return 0;
+ return -1;
+
+ result = gtk_editable_get_selection_bounds (GTK_EDITABLE (widget), NULL, &cursor_position);
+ if (!result)
+ return -1;
- return gtk_editable_get_position (GTK_EDITABLE (widget));
+ return cursor_position;
}
static gboolean
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
- return 0;
+ return -1;
+
+ /* Non-selectable labels cannot have a caret. */
+ if (!gtk_label_get_selectable (GTK_LABEL (widget)))
+ return -1;
return _gtk_label_get_cursor_position (GTK_LABEL (widget));
}
gtk_text_accessible_get_caret_offset (AtkText *text)
{
GtkWidget *widget;
+ gboolean result;
+ int cursor_position;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
- return 0;
+ return -1;
+
+ result = gtk_editable_get_selection_bounds (GTK_EDITABLE (widget), NULL, &cursor_position);
+ if (!result)
+ return -1;
- return gtk_editable_get_position (GTK_EDITABLE (widget));
+ return cursor_position;
}
static gboolean
gtk_text_cell_accessible_init (GtkTextCellAccessible *text_cell)
{
text_cell->priv = gtk_text_cell_accessible_get_instance_private (text_cell);
+ text_cell->priv->caret_pos = -1;
}
static gchar *
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
- return 0;
+ return -1;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
return get_insert_offset (buffer);